v1.9.0: shared filter dialog across list pages + unrated-as-0 rating semantics - #85
Merged
Conversation
…sAny/HasNone The rating < / <= filters previously excluded unrated (rating = 0) words via a `rating > 0 &&` guard, so e.g. `< 1` matched nothing despite 0 < 1 being true. Remove the guard so unrated words compare numerically like any other value. Since ratings are 1-5, `>= 1` now equals the former HasAny and `< 1` equals the former HasNone, so the redundant HasAny/HasNone operators are removed from the enum, matchRating, getRatingOperatorName, the three Select-by-Rating dialogs (and their isValueDisabled getter + template binding), and i18n. Vocabulary page (which never exposed HasAny/HasNone) and the chinese/translate/knowledge Select-by-Rating dialogs all route through the shared matchRating for consistent semantics. Tests updated. Co-Authored-By: Claude <noreply@anthropic.com>
…emoval Update the rating-filter matching description (unrated 0 now compared numerically; < 1 matches unrated, >= 1 matches any rated) and the RatingOperatorEnum member list (HasAny/HasNone dropped) in vocabulary-exercises-architecture.md to match the code change in the prior commit. Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Complete the reusable-filter-dialog rollout (docs/reusable-filter-dialog-design.md): the dialog, the vocabulary adoption, and the Chinese/translate/knowledge migrations now live in the tree, replacing 7 page-local filter dialogs. - src/app/shared/filter-dialog: tree editor + pure model (schema-driven properties, seed/emit round-trip, validation, summaries); string operators now expose actslib's full matrix incl. lexicographic/Between - chinese: one filterDefinition + single Filter menu (was two dialogs/menus) - translate: same collapse onto SENTENCE_FILTER_PROPERTIES; adds the missing top-level 'english' i18n key the old dialog rendered raw - knowledge: KNOWLEDGE_FILTER_PROPERTIES with itemType as the enum proof (enumValues + choices labeled like the Type column) - rating Between added to all four pages' whitelists (legacy dialogs never offered it; the shared editor does; unrated = 0 keeps comparing) - retire RatingOperatorEnum/RatingCondition/matchRating/summarizeRatingFilter from ui-common (no hand-written matchers left) - deprecate page-local select-by-rating dialogs; decompose translate page into session/result components; i18n + docs updated to as-built Tests: 1826 passing across 71 spec files. Co-Authored-By: Claude Code <noreply@anthropic.com>
Also re-syncs package-lock.json with package.json (version fields and the actslib entry this branch added). Co-Authored-By: Claude Code <noreply@anthropic.com>
The two wall-clock tests (sleep 150ms racing the constructor's setTimeout(100)) timed out in CI on the linux runner even though they pass locally. Create the component under a fake setTimeout clock and advance it deterministically instead.
fixture.whenStable() relies on zone stability and stalled past the 5 s test timeout on loaded CI runners (two integration tests failed there while passing locally). Await renderMarkdown() directly, as the other tests in this file already do.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/app/shared/filter-dialog/): one project-wideIFilterDefinitiondialog now powers filtering on all four list pages — vocabulary, knowledge, Chinese, and translate — each with its own*_FILTER_PROPERTIESschema (design:docs/reusable-filter-dialog-design.md).</<=filters; theHasAny/HasNoneoperators were dropped (previouslyc02c6ac, docs follow-upa0737f2).package.json+ both environment files).Commits
c02c6aca0737f28f5fff56fbd2b54b6f333Stats
157 files changed, +16,959 / -7,361.
🤖 Generated with Claude Code